package com.qiang.demo01;

import com.qiang.demo01.damain.Student;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class HomeWork03 {
    public static void main(String[] args) throws ParseException {
        /*
        男生和女生各自有多少人？    可以

00后有多少人？    可以

名字长度是2的学生有多少人？ 可以

名字长度是3的学生有多少人？ 可以

名字长度是4的学生有多少人？ 可以

姓张的同学有多少人？  可以



手机号中至少包含2个6的有哪些？  可以

手机号中至少包含1个6和1个8的有哪些？  可以

各个小组的平均年龄？  可以

有2个的微信号的人个数  可以

有1个的微信号的人个数   可以

最大年纪的三个人是谁

最小年纪的三个人是谁

最大年纪的人和最小年纪的人是谁，差多久?

不同的姓各自有多少学生？

不同的年龄段有多少人？

         */
        ArrayList<Student> list = new ArrayList<>();

        ArrayList<String> s1 = new ArrayList<>();
        ArrayList<String> s2 = new ArrayList<>();
        ArrayList<String> s3 = new ArrayList<>();
        ArrayList<String> s4 = new ArrayList<>();
        ArrayList<String> s5 = new ArrayList<>();
        ArrayList<String> s6 = new ArrayList<>();
        ArrayList<String> s7 = new ArrayList<>();
        ArrayList<String> s8 = new ArrayList<>();

        s1.add("123456");
        s1.add("435672");
        s2.add("456743");
        s3.add("876557");
        s4.add("348655");
        s5.add("132468");
        s6.add("347955");
        s6.add("457755");
        s7.add("975673");
        s8.add("609763");

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Student st1 = new Student("001", "张三", "男", 21, sdf.parse("1991-01-01"), 1, "18735309041", s1);
        Student st2 = new Student("002", "李四", "女", 22, sdf.parse("1990-12-09"), 1, "18736609041", s2);
        Student st3 = new Student("003", "王麻子", "男", 23, sdf.parse("1989-05-25"), 2, "18735666641", s3);
        Student st4 = new Student("004", "赵六", "男", 28, sdf.parse("1999-09-09"), 2, "18735306041", s4);
        Student st5 = new Student("005", "谭九", "男", 25, sdf.parse("1987-12-11"), 3, "18735609641", s5);
        Student st6 = new Student("006", "张思", "男", 29, sdf.parse("1986-05-24"), 3, "18735309041", s6);
        Student st7 = new Student("007", "李瑞", "男", 27, sdf.parse("1985-10-22"), 4, "18735360661", s7);
        Student st8 = new Student("008", "王丽丽", "女", 28, sdf.parse("1984-08-21"), 4, "18730666661", s8);

        list.add(st1);
        list.add(st2);
        list.add(st3);
        list.add(st4);
        list.add(st5);
        list.add(st6);
        list.add(st7);
        list.add(st8);
        //定义出事变量的值
        int numnan = 0;
        int numnv = 0;
        int numage = 0;
        int numname = 0;
        int numname3 = 0;
        int numname4 = 0;
        int numnamez = 0;
        int numname6 = 0;
        int numname68 = 0;
        int agefw1 = 0;
        int agefw2 = 0;
        int num = 0;//6的个数初始值为0

        //新建一个Set集合，把姓氏放进去，不许重复
        TreeSet<Character> hs = new TreeSet<>();
        //把所有姓氏添加进去，并且不允许重复
        for (Student student : list) {
            hs.add(student.getName().charAt(0));
        }

        //再次循环，对边姓氏

        //先遍历存储姓氏的集合
        int sum = 0;
        for (Character h : hs) {
            for (int j = 0; j < list.size(); j++) {
                if (list.get(j).getName().charAt(0) == h) {
                    sum++;
                    System.out.println();
                }
            }
            System.out.println(h + "姓有" + sum + "个");
            sum = 0;
        }
        //System.out.println(hs);

        System.out.println("===================");




        for (int i = 0; i < list.size(); i++) {

            String sex = list.get(i).getSex();
            boolean result = sex.equals("男");


            //计算名字长度范围
            if (result == true) {
                numnan++;
            } else {
                numnv++;
            }
            if (list.get(i).getAge() <= 20) {
                numage++;
            }
            if (list.get(i).getName().length() == 2) {
                numname++;
            }
            if (list.get(i).getName().length() == 3) {
                numname3++;
            }
            if (list.get(i).getName().length() == 4) {
                numname4++;
            }
            if (list.get(i).getName().startsWith("张")) {
                numnamez++;
            }

            ////计算年龄范围
            if (list.get(i).getAge() >= 20 && list.get(i).getAge() < 25) {
                agefw1++;
            } else {
                agefw2++;
            }

        }
        int aveage2 = numage / (list.size());

        int sumzu1 = 0;
        int summ1 = 0;

        int sumzu2 = 0;
        int summ2 = 0;

        int sumzu3 = 0;
        int summ3 = 0;

        int sumzu4 = 0;
        int summ4 = 0;


        for (int i = 0; i < list.size(); i++) {

            //计算各个小组的平均年龄
            //int sumage = 0;

            if (list.get(i).getGroup() == 1) {
                sumzu1++;
                summ1 = summ1 + list.get(i).getAge();
            }


            if (list.get(i).getGroup() == 2) {
                sumzu2++;
                summ2 = summ2 + list.get(i).getAge();
            }


            if (list.get(i).getGroup() == 3) {
                sumzu3++;
                summ3 = summ3 + list.get(i).getAge();
            }


            if (list.get(i).getGroup() == 4) {
                sumzu4++;
                summ4 = summ4 + list.get(i).getAge();
            }
        }
        System.out.println("第一组的平均年龄是：" + (summ1 / sumzu1));
        System.out.println("第二组的平均年龄是：" + (summ2 / sumzu2));
        System.out.println("第三组的平均年龄是：" + (summ3 / sumzu3));
        System.out.println("第四组的平均年龄是：" + (summ4 / sumzu4));

        int s = 0;
        int m = 0;
        for (int i = 0; i < list.size(); i++) {
            //计算微信号数量
            if (list.get(i).getWechat().size() == 1) {
                s++;
            }
            if (list.get(i).getWechat().size() == 2) {
                m++;
            }
        }
        System.out.println("一个微信号的有：" + s);
        System.out.println("两个微信号的有：" + m);

        System.out.println("===================");


        //计算含有6和8 的个数
        System.out.println("至少含有一个6和一个8 的是：");
        for (int i = 0; i < list.size(); i++) {

            for (int j = 0; j < list.get(i).getPhonenumber().length(); j++) {
                boolean result1 = list.get(i).getPhonenumber().contains("6") && list.get(i).getPhonenumber().contains("8");
                if (result1 == true) {
                    numname68++;
                    System.out.println((list.get(i).getName()));
                    break;
                }
            }
        }

        System.out.println("===================");

        //计算最少含有两个6 的个数
        System.out.println("含有6的个数大于等于两个的是：");
        for (int i = 0; i < list.size(); i++) {

            for (int j = 0; j < list.get(i).getPhonenumber().length(); j++) {
                if (list.get(i).getPhonenumber().charAt(j) == '6') {
                    num++;
                }
                //System.out.print(list.get(0).getPhonenumber().charAt(j));
            }
            if (num >= 2) {
                numname6++;
                System.out.println(list.get(i).getName());
            }
            num = 0;
        }

        System.out.println("===================");

        System.out.println("男性" + numnan);
        System.out.println("女性" + numnv);
        System.out.println("00后" + numage);
        System.out.println("名字长度2的" + numname);
        System.out.println("名字长度3的" + numname3);
        System.out.println("名字长度4的" + numname4);
        System.out.println("张姓的" + numnamez);

        System.out.println("===================");


        System.out.println("最少含有两个6的个数" + numname6);
        System.out.println("含有6和8的" + numname68);
        System.out.println("平均年龄" + aveage2);

        //新建一个set集合，按照年龄顺序调整，否则按照名字调整
        TreeSet<Student> tt = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int result = o1.getAge() - o2.getAge();
                result = result == 0 ? o1.getName().compareTo(o2.getName()) : result;
                return result;
            }
        });
        tt.add(st1);
        tt.add(st2);
        tt.add(st3);
        tt.add(st4);
        tt.add(st5);
        tt.add(st6);
        tt.add(st7);
        tt.add(st8);
        for (Student student : tt) {
            System.out.println(student);
        }

        System.out.println("===================");

        //新建一个集合，把调整好顺序的信息放进去
        ArrayList<Student> arr = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            arr.addAll(tt);
            //System.out.println(arr);
        }
        System.out.println("===================");

        //String name = arr.get(0).getName();
        //System.out.println(name);

        //查找最大最小年龄差
        Student first = tt.first();
        Student last = tt.last();

        int age = first.getAge();
        int age2 = last.getAge();

        System.out.println("年龄最小的三个人是：");
        System.out.println(arr.get(0).getName());
        System.out.println(arr.get(1).getName());
        System.out.println(arr.get(2).getName());

        System.out.println("===================");

        System.out.println("年龄最大的三个人是：");
        System.out.println(arr.get(arr.size() - 1).getName());
        System.out.println(arr.get(arr.size() - 2).getName());
        System.out.println(arr.get(arr.size() - 3).getName());

        System.out.println("===================");

        System.out.println("年龄最小的人是" + first.getName());
        System.out.println("年龄最大的人是" + last.getName());
        System.out.println("两人相差岁数：" + (age2 - age));
        System.out.println("20（含）到25（不含）的人数为：" + agefw1);
        System.out.println("25（含）到230（不含）的人数为：" + agefw2);


        System.out.println("===================");

        //利用HashMap查找姓氏,新建一个集合，把姓氏放进去，value放数字0，
        HashMap<Character, Integer> hm = new HashMap<>();
        //先遍历原来的数组，把姓名的姓拿出来，放到keyset里面
        for (Student st : list) {
            hm.put(st.getName().charAt(0), 0);
        }
        Set<Character> ch = hm.keySet();//获取所有的key值

        //遍历keyset集合
        for (Character character : ch) {
            //循环原来的集合，查找姓氏
            Integer integer = hm.get(character);

            for (Student student : list) {
                char c = student.getName().charAt(0);
                if (c == character) {
                    hm.put(c, integer++);
                }
            }
            System.out.println(character + "姓氏有" + integer + "个");
        }

    }
}
